package org.jeecg.modules.online.auth.service;

import org.jeecg.modules.online.auth.entity.OnlAuthPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.online.auth.vo.AuthColumnVO;
import org.jeecg.modules.online.auth.vo.AuthPageVO;

import java.util.List;

/**
 * @Description: onl_auth_page
 * @Author: jeecg-boot
 * @Date:   2020-07-16
 * @Version: V1.0
 */
public interface IOnlAuthPageService extends IService<OnlAuthPage> {


    /**
     * 不启用 字段权限功能
     * @param authColumnVO
     */
    void disableAuthColumn(AuthColumnVO authColumnVO);

    /**
     * 启用 字段权限功能
     * @param authColumnVO
     */
    void enableAuthColumn(AuthColumnVO authColumnVO);

    /**
     * 切换 前端点击checkbox时调用
     * @param authColumnVO
     */
    void switchAuthColumn(AuthColumnVO authColumnVO);

    /**
     * 切换 表单可见 权限
     * @param cgformId
     * @param code
     * @param flag true增 false删除
     */
    void switchFormShow(String cgformId,String code,boolean flag);

    /**
     * 切换 表单可编辑 权限
     * @param cgformId
     * @param code
     * @param flag true增 false删除
     */
    void switchFormEditable(String cgformId,String code,boolean flag);

    /**
     * 切换 列表可见 权限
     * @param cgformId
     * @param code
     * @param flag true增 false删除
     */
    void switchListShow(String cgformId,String code,boolean flag);


    /**
     * 根据表单ID查询 权限数据
     * @param roleId 角色ID
     * @param cgformId 表单ID
     * @param type  1字段权限  2按钮权限
     * @return
     */
    List<AuthPageVO> queryRoleAuthByFormId(String roleId, String cgformId, int type);


    /**
     * 查询表单 的数据权限
     * @param roleId 角色ID
     * @param cgformId 表单ID
     * @return
     */
    List<AuthPageVO> queryRoleDataAuth(String roleId, String cgformId);



    /**
     * 根据表单ID查询 权限数据
     * @param cgformId 表单ID
     * @param type  1字段权限  2按钮权限
     * @return
     */
    List<AuthPageVO> queryAuthByFormId(String cgformId, int type);

    /**
     * 查询当前人 角色相关的权限信息  配置了权限数据 但是没有授权
     * @param cgformId 表单ID
     * @param control  3查询禁用的数据  5查询隐藏的数据
     * @param page  3列表数据  5表单数据
     * @return
     */
    List<String> queryRoleNoAuthCode(String cgformId, Integer control, Integer page);

    /**
     * 查询表单的 被禁用的字段/按钮数据
     * @param cgformId
     * @return
     */
    List<String> queryFormDisabledCode(String cgformId);

    /**
     * 查询隐藏的字段/按钮数据
     * @param userId 用户ID
     * @param cgformId 表单ID
     * @param isList 是否是列表数据
     * @return
     */
    List<String> queryHideCode(String userId, String cgformId, boolean isList);

    /**
     * 查询隐藏的字段数据
     * @param userId 用户ID
     * @param cgformId 表单ID
     * @return
     */
    List<String> queryListHideColumn(String userId, String cgformId);

    /**
     * 查询表单隐藏的列
     * @param userId 用户ID
     * @param cgformId 表单ID
     * @return
     */
    List<String> queryFormHideColumn(String userId, String cgformId);

    /**
     * 查询表单隐藏的按钮
     * @param userId 用户ID
     * @param cgformId 表单ID
     * @return
     */
    List<String> queryFormHideButton(String userId, String cgformId);


    /**
     * 查询隐藏的字段/按钮数据
     * @param cgformId 表单ID
     * @param isList 是否是列表数据
     * @return
     */
    List<String> queryHideCode(String cgformId, boolean isList);

    /**
     * 查询列表隐藏的按钮 【一对多的子表行编辑组件】
     * @param userId 可以传null 内部处理
     * @param cgformId
     * @return
     */
    List<String> queryListHideButton(String userId, String cgformId);
}
